const fs = require('fs');
const path = require('path');

// 正则表达式，匹配style，script标签
const regstyle = /<style>[\s\S]*<\/style>/;
const regscript = /<script>[\s\S]*<\/script>/;

fs.readFile(path.join(__dirname, './files/index.html'), 'utf-8', function (err, dataStr) {
  // 读取失败
  if (err) {
    return console.log('读取失败' + err.message);
  }
  // 读取成功，调用对应方法，拆解css，js，html文件
  resolveCSS(dataStr);
  resolveJS(dataStr);
  resolveHTML(dataStr);
});

// 定义处理CSS样式方法
function resolveCSS(htmlStr) {
  const r1 = regstyle.exec(htmlStr);
  const newCSS = r1[0].replace('<style>', '').replace('</style>', '');

  fs.writeFile(path.join(__dirname, './clock/index.css'), newCSS, function (err) {
    if (err) return console.log('写入失败' + err.message);
    console.log('写入成功');
  });
}

// 定义处理JS样式方法
function resolveJS(htmlStr) {
  const r2 = regscript.exec(htmlStr);
  const newJS = r2[0].replace('<script>', '').replace('</script>', '');

  fs.writeFile(path.join(__dirname, './clock/index.js'), newJS, function (err) {
    if (err) return console.log('写入失败' + err.message);
    console.log('写入成功');
  });
}

// 定义处理html方法
function resolveHTML(htmlStr) {
  const newHTML = htmlStr.replace(regstyle, '<link rel="stylesheet" href="./index.css">').replace(regscript, '<script src = "./index.js"></script>');
  // 写入index.html
  fs.writeFile(path.join(__dirname, './clock/index.html'), newHTML, function (err) {
    if (err) return console.log('写入失败' + err.message);
    console.log('写入成功');
  });
}
